0d5f8b87507d95d967c1e6827d057b6e0819f555,source/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java,CreateFromUsageUtils,addMemberInfo,#PsiMember[]#PsiElement#List#PsiElementFactory#,577

Before Change


                                    PsiElement place,
                                    List<ExpectedTypeInfo[]> types,
                                    PsiElementFactory factory) {
    if (members.length > MAX_GUESSED_MEMBERS_COUNT) return;

    List<ExpectedTypeInfo> l = new ArrayList<ExpectedTypeInfo>();
    PsiManager manager = place.getManager();
    ExpectedTypesProvider provider = ExpectedTypesProvider.getInstance(manager.getProject());
    for (PsiMember member : members) {
      PsiClass aClass = member.getContainingClass();
      if (manager.getResolveHelper().isAccessible(aClass, place, null)) {
        if (!(aClass instanceof PsiAnonymousClass)) {
          PsiClassType type = factory.createType(aClass);
          l.add(provider.createInfo(type, ExpectedTypeInfo.TYPE_OR_SUBTYPE, type, TailType.NONE));
        }
      }

After Change


    List<ExpectedTypeInfo> l = new ArrayList<ExpectedTypeInfo>();
    PsiManager manager = expression.getManager();
    ExpectedTypesProvider provider = ExpectedTypesProvider.getInstance(manager.getProject());
    for (int i = 0; i < Math.min(MAX_GUESSED_MEMBERS_COUNT, members.length); i++) {
      PsiMember member = members[i];
      PsiClass aClass = member.getContainingClass();
      if (aClass instanceof PsiAnonymousClass) continue;

      if (manager.getResolveHelper().isAccessible(aClass, expression, null)) {
        PsiClassType type;
        final PsiElement pparent = expression.getParent().getParent();
        if (pparent instanceof PsiMethodCallExpression) {

          PsiSubstitutor substitutor = ExpectedTypeUtil.inferSubstitutor(((PsiMethod)member), (PsiMethodCallExpression)pparent, false);
          if (substitutor == null) {
            type = factory.createType(aClass);
          } else {
            type = factory.createType(aClass, substitutor);
          }